【Design pattern】设计模式系列笔记的前言

[Design pattern]: 设计模式相关系列

本系列为本人2015年间通过Java语言对常见设计模式的通俗化代码实现, 通过关系图降低理解难度.

概念和思路参考: <Head First设计模式>,

设计模式的由来

基于面向对象思想(抽象,继承,封装,多态),不断对好的设计进行总结,最后形成理论体系.通俗的讲,设计模式就是解决问题的方式.

读<Head First设计模式> 中提到设计原则:

  1. 封装变化。
  2. 多用组合少用继承。
  3. 针对接口编程,不针对实现编程。
  4. 为交互对象之间的松耦合设计而努力。
  5. 类应该对扩展开放,对修改关闭。
  6. 依赖抽象,不要依赖具体类。
  7. 只和朋友交谈。
  8. 别找我,我会找你。
  9. 类应该只有一个改变的理由。

如何学习设计模式

理解它的应用场景,解决了哪些问题,有什么好处,以及实现方式.
好的项目不是开始时就设计出来的,而是经过不断的修改完善而产生的.(这里并不代表开始就不用好好的设计)

接下来验证之前的现象和我得出的结论

分类

参考一书

根据使用目的分类:创建型,结构型,行为型

创建型:主要重点在于对象的实例化过程

具体有:抽象工厂(Abstract factory),生成器(Builder),工厂方法(Factory method),原型(Prototype),单件(Singleton)

结构型:主要重点在于如何组合类之间的关系,构建强大的结构

具体有:适配器(Adapter),桥接(Bridge),组合(Composite),装饰(Decorator),外观(Facade),享元(FlyWeight),代理(Proxy)

行为型:主要在于类与类之间的行为通信

具体有:职责链(Chain of reSponsibility),命令(Command),解释器(Interpreter),迭代器(Iterator),中介者(Mediator),备忘录(Memento),观察者(Observer),状态(State),策略(Strategy),模板方法(Template method),访问者(Visitor)

随手附上一张书中的关系图

总结

使用哪个设计模式没有绝对的.

补充 关于复用

方式有三种:继承,组合,参数化类型(基本不用) 优先使用组合,使代码保持封装,更灵活,但是比较低效(因为有间接性)